Binary arithmetic and logic manipulator

ABSTRACT

A programmable binary arithmetic and logic manipulator which comprises a rectangular array of (M) (N+1) logic cells and N+1 columnar control cells. The columnar control cells are designated as U and V and are binary stages capable of assuming binary one or binary zero states. These columnar control cells control the overall operation performed by each column. Associated with each cell are a pair of binary stages designated X and Y respectively, which in conjunction with the columnar control cells U and V define the outputs D and E of a cell as functions of the cell inputs A, B and C. The output lines D and E of each cell are used as inputs to adjacent cells or, at the edges of the array, as inputs to external logic or additional arrays. Each column can be selected by a storage position U as an arithmetic or logical operation. In addition, each column can be selected by a storage position V as (1) their AND and OR function when used with U as a logical operation or (2) as a binary input to the column when used with U as an arithmetic operation. Input C may be connected externally to input B or may instead be connected externally to another array or to external logic. Each logical cell contains a circuit whereby the logic statements for each output line are as follows: D X(YC+YB)+X(UA+UC(YB+YB)) E X(YB+YC)+X (UV+UC+UC) (YB+YB))+(UC(YB+YB)) +(UVC

United States Patent [72] Inventors Appl. No. Filed Patented Assignee BINARY ARI'IIIMETIC AND LOGIC MANIPULATOR 8 Claims, 13 Drawing Figs.

US. Cl 235/152, 235/156, 235/175, 328/92 Int. Cl G06f 7/38 Field of Search; 235/152, 156,175, 176,340/166, 146.2, l72.5;328/l58,92

References Cited UNITED STATES PATENTS 3,261,000 7/1966 Behnke 3,371,320 2/1968 Lachenmayer. 3,454,310 7/1969 Wilhelm,.lr.

OTHER REFERENCES J. C. Greeson, Jr., Variable Function Logic Block," IBM TECHNICAL DISCLOSURE BULLETIN, Vol. 11, No. 3,

340/146.2X 340/166X 235/152X Primary ExaminerMalcolm A. Morrison Assistant Exam [nar-Charles E. Atkinson Attorneys-Hanifin and Jancin and Isidore Match ABSTRACT: A programmable binary arithmetic and logic manipulator which comprises a rectangular array of (M) (N-l-l) logic cells and N+l columnar control cells. The columnar control cells are designated as U and V and are binary stages capable of assuming binary one or binary zero states. These columnar control cells control the overall operation performed by each column. Associated with each cell are a pair of binary stages designated X and Y respectively, which in conjunction with the columnar control cells U and V define the outputs D and E of a cell as functions of the cell inputs A, B and C. The output lines D and E of each cell are used as inputs to adjacent cells or, at the edges of the array, as inputs to external logic or additional arrays. Each column can be selected by a storage position U as an arithmetic or logical operation. In addition, each column can be'selected by a storage position V as (1) their AND and OR function when used with U as a logical operation or (2) as a binary input to the column when used with U as an arithmetic operation. Input C may be connected externally to input B or may instead be connected externally to another array or to external'logic. Each logical cell contains a circuit whereby the logic state ments for each output line are as follows:

August 1968 [UC(YB+ 1 3)] [UVc]} 0 0 0 1 V1 1 5N VN N 'Voo l l U00 1 U01 UoN l m lXQ' j L :1 12 B. 10 5 11 1N D1 to; i M n A2 A2 X20 3 X21 1 X57 1 20 21 2N B2 ff D2 Yaol Yzn ll 1 ll A T n T r n rm r T T XMO l MO PMENTEU JUN 8197: $584,205

sum 1 BF 6 INVENTORS DAVEY L. MALABY MICHAEL A. WESLEY ATTORNEY BINARY ARITHMETIC AND LOGIC MANIPULATOR BACKGROUND OF THE INVENTION This invention relates to an arithmetic and logic manipulator. More particularly, it relates to an arrangement wherein there tend to be combined logical and arithmetic operations in the same array. Many of the known character and pattern recognition systems in existence today operate by transforming the character or pattern to be recognized into a string of binary bits for subsequent digital processing. In such digital processing, many of the recognition algorithms employed therein involve a data reduction operation which results in the production of a string of binary bits which indicates the presence or absence of subpatterns or features in the original pattern or character.

Pattern or character classification is quite often based upon the computation of the Hamming distances between the string of bits which indicate the features which are present and a library of standard feature strings of bits which represent the standard classifications. Particularly, standard feature strings may be in ternary form thereby allowing a Dont Care" condition for features not relevant to a particular standard classification.

It is accordingly an important object of this invention to provide an arrangement which assists in both the detection of features and in the comparison of features present with the library of standard features.

It is another object to provide an arrangement which, when used for the foregoing feature detection, may be programmed to compute in parallel multilevel Boolean or majority, i.e., threshold, functions between bits in the string representing the original pattern or character.

It is a further object to provide an arrangement which when used for comparison with the library of standard references may be programmed to compute in parallel the Hamming distances between the bit strings representing the features present and a library of standard references in ternary form.

It is yet another object of the invention to provide a binary arithmetic and logic manipulator which is capable of combining both arithmetic and logical operations.

SUMMARY OF THE INVENTION Generally speaking, and in accordance with the invention, there is provided a programmable logic and arithmetic manipulating arrangement. The arrangement comprises a rectangular array of cells which define N+l columns of the cells and M rows of the cells, the output D of each cell in a row being applied as an input B to the next cell to the right in the row, the output E of each cell in a column being applied as an input C to the next lower cell in the column. Included in the arrangement are a first storage stage U and a secondstorage stage V associated with each of the columns for determining the operation to be performed by each column, the U and V stages each being capable of assuming opposite binary states, and a third storage stage X and a fourth storage stage Y associated with each of the cells for determining the operations to be performed by each of the cells in accordance with the operation determined by the aforementioned U and V stages, the X and Y stages each being capable of assuming opposite binary states. There are provided means for applying respective B,-B inputs to each of the cells inthe leftmost column of the array; means for applying A,A inputs to the cells respectively comprising each row in the array; and means for applying respective C,,C inputs to each of the cells in the topmost row of the array. The array is operative to produce respective D,-D outputs from the cells comprising the rightmost column of the array and E E respective outputs from the cells comprising the lowermost column of the array, the cells each comprising a circuit for producing the following D and E outputs: 1 =7 YC+YB +X UA+UC YB+ YE 1 E=Y( YB+I C)+X {[UV+UC+UC)(YB+I B)]+[UC(YB+YB)] Uvcll The foregoing and other objects, features and advantages of the invention will beapparent from the following more particular description of a preferred embodiment of the invention, as illustrated in the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS In the drawings:

FIG. 1 is a depiction of an illustrative'embodiment of an arithmetic and logic manipulator constructed in accordance with the principles of the invention;

FIGS. 2A and 2B, taken together as in FIG. 2, constitute a logical diagram of an embodiment of a logic cell shown in FIG. 1;

FIG. 3 is a diagram of the pass" operation;

FIG. 4 is a diagram similar to FIG. 3 of the transfer operation;

FIG. 5 is a depiction illustrating the functional unit according to the invention;

FIG. 6 is a truth table of the functions produced by the logic cell of the invention;

FIG. 7 is a diagram illustrating the operation of the invention as a logic manipulator;

FIGS. 8A and 8B are diagrams illustrating the operation of the invention as a combined binary arithmetic and logic manipulator;

FIG. 9 is a diagram depicting how a plurality of arrays can be combined; and

FIG. 10 is a depiction showing how a multilevel array can be constructed according to the invention.

DESCRIPTION OF THE PREFERRED EMBODIMENT Referring to FIG. 1, there is shown therein a depiction of an arrangement constructed in accordance with the principles of the invention. The arrangement comprises a rectangular grid of logic cells which are designated with two digit numerals, the first digit designates the row in which a cell falls and the second digit designates the column in which a cell is located. Thus, the cells constituting the topmost row of the grid are designated with the numerals 101N respectively. The cells constituting the leftmost column of the grid are designated with the numerals 10-MO respectively. The grid accordingly comprises (M)(N+l cells.

Associated with each column are a pair of storage positions, viz. U and V, which control the overall operation performed by each column. As seen in FIG. 1, the V storage positions are designated as Y -V and the U storage positions are designated U U i.e., there are a pair of U and V storage position controls provided for each column. The outputs of the V and U storage position stages are respectively applied to 'each of the logic cells in the corresponding column. It will be further explained hereinbelow how the U and V storage positions control the overall operation performed by each column.

A pair of storage position controls X and Y are provided for each cell. Thus, for example, for the topmost row of logic cells l0-1N, the associated X position stages are respectively designated X, X,- and the Y position stages are respectively designated Y, Y, Consequently, in the M row, in the N column, the X and Y cells are designated X and Y Each cell has three inputs, viz. A, B, and C. At the edges of the array, the A and B inputs are designated by subscripts in accordance with the row to which they are applied. Thus, for example, the inputs to the topmost row are A and B The A and B inputs to the lowermost row are A and'B The C inputs are applied only to the logic cells of the topmost row thereof and are respectively designated as C C-.

The horizontal output of each cell is its D output and the vertical output of each cell is its E output. As seen in the depiction in FIG. I, the D output line of a cell is effectively the B input line to the adjacent cell to the right in a row. The E output line of a cell is the C input line to the next lower cell. The D output lines from the N column of cells are designated D, D The E output lines of the cells in the M row are designated E --E respectively. Into each stage V, there is shown an input 'S, 1.e.. a shift register input, the S inputs being designated S S and function to act as shifting pulses if it is chosen to have the U. V, X and Y stages in a shift register. The outputs of each V unit are shown as being applied to the U units and thence to each X and Y unit in series, such connection being made to indicate a shift register construction.

As will be explained further hereinbelow, the X and Y stages are storage positions within each cell that, in conjunction with the column control cells U and V, define the outputs D and E of a cell as functions of the cell inputs A, B and C. The output lines D and E of each cell are used as inputs to adjacent cells or, at the edges of the grid, as inputs to external logic or additional grids.

Each column can be selected by its associated storage position U to perform an arithmetic or a logical operation. In addition, each column can be selected by its associated storage position V to perform an AND or OR function when the associated U storage position is employed to select a logical operation for the column or, as a binary input to the column when the associated storage position U is used to select an arithmetic operation for the column. The storage positions X and Y are used as separate controls on each individual cell. Storage position X is considered as a CARE/DON'T CARE control and storage position Y as a TRUE/COMPLEMENT control. The X and Y positions are used in conjunction with each other as follows:

Where X is employed as a CARE control, i.e., condition X, Y selects the TRUE input B, i.e., condition YB, or the COM- PLEMENT ofinput B, i.e., condition YB;

where X is employed as a DON'T CARE control, i.e., condition X, Y selects the bypass paths referred to as PASS and TRANSFER of the inputs B and C, i.e., the conditions UC, YB, YB and YC.

The structure of each cell lMN enables the following outputs on the D and E output lines respectively. D=X(YC+YB)+X[UA+UC(YB+Y)] In FIGS. 2, 2A and 23, there is shown an illustrative embodiment of an arrangement for each cell l0MN for producing the foregoing equations on output lines D and E respectively. In these FIGS, it is seen that the V, U, X and Y stages are external to the structure of a logic cell, the U, V, X and Y stages being externally programmed. They are shown in FIGS. 2, 2A and 2B as being bistable circuits such as flip-flops which are programmed for given operations. One method of program storage and load could be as shown in FIG. 1 where U, V, X and Y may be positions of a shift register which is columnar loaded with the S input being the shift input. The number of columns loaded in parallel would depend on the word size of the memory or processor employed to load the array. This type of approach generally assumes that the program would be changed infrequently compared to its control of a variety of inputs. Where more dynamic program changes are needed, each cell could have temporary shift register positions where the total storage array including the temporary positions could be loaded infrequently from an external device. Alternatively, a shift signal could load a different program from temporary storage where all positions would change simultaneously. The storage array could be an addressable memory which would give it considerable flexibility.

Another method of program storage and load could be to make each storage position U, V, X, and Y be controlled by a light sensitive diode or transistor and to package the array so that a changeable mask and constant light source would produce the required program.

The structure contained within the area enclosed by the broken lines in FIGS. 2, 2A and 2B is the circuitry within the logic cell. As seen therein, the AND circuit produces the output UV and the AND circuit 12 produces the output UC. The inverter 14 produces the output C and the AND circuit 16 produces the output UC. The OR circuit 18 produces the output (57+l7C-l-UC). The AND circuit 18 produces the output UC and the AND circuit 20 produces the output YB. The inverter 22 produces the output B. The AND circuit 24 produces the output YB and the OR circuit 26 produces the output (XB-l-YF) whereby the AND circuit 28 produces the output UC( YB-l-YB). The AND circuit 32 produ::e s the output UVC, the AND circuit 34 produces the output YC, and the AND circuit 35 produces the output YB whereby the OR circuit 36 produces the output (YB+ Y C) and the AND circuit 38 produces the outpul X( YB-HC). The AND circuit 37 produces the output YB and the OR circuit 39 produces the output YB+YB whereby the AND circuit 30 produces the output UV+UC+UE YB+YE the output of OR circuit 40 being UV+UC+U YB+T +UC YB+YE)+UVC whereby with the input of X to the AND circuit 42, the output of OR circuit 44 is the equation for the output on an E line.

The AND circuit 46 produces the output YC and the AND circuit 48 produces the output UA whereby the OR circuit 50 produces the output (YB+ YC) and the AND circuit 52, having the input X applied thereto, produces the output )7( YC+I B). The AND circuit 54 produces the output UC(XB+7) .whereby the OR circuit 56 produces the output UA+U C( YB+Y). The AND circuit 58 produces the output X[UA +UC( YB+Yl i)] and the OR circuit 60 produces an output having the equation appearing on an output line D.

FIGS. 3 and 4 respectively show the operation when X is in its DONT CARE state, i.e., condition X, for the condition Y, i.e., the pass condition, and the condition Y, i.e., the transfer condition. It is seen that in the pass condition (FIG. 3), the input B appears directly on output line D and the input C appears on the output line E. In the transfer condition (FIG. 4), the input C is transferred to output line D and the input B is transferred to the output line E. The pass operations are effected by the terms XYB and XYC. The transfer operations are effected by the terms XYC and XYB. In FIG. 5, there is shown a diagram which illustrates the functional unit where U, V, X, and Y, are storage positions that control the logical input lines A, B, and C, in order to generate the outputs on lines D and E.

FIG. 6 is a truth table setting forth the logical function performed in each cell l0MN by the columnar controls U and V, the cell controls X and Y, and the input lines A, Band C. In this table it is seen that when U is at binary 1, i.e., the condition U, an arithmetic operation is performed. With U calling for an arithmetic operation and V equal to binary l," i.e., condition UV, a binary l is added to a column. With V equal to a binary 0 in this situation, i.e., condition UV, a binary 0 is added to a column. Where U is equal to O, i.e., condition U, and with V equal to a binary l," i.e., condition UV, an AND operation is performed by a column and with condition UV, i.e., where V is also a binary 0, an OR operation is performed by a column. In the horizontal aspect in the X condition, i.e., X is performing a DONT CARE operation, XY calls for a transfer operation and XY calls for a pass operation. With X in the binary 1" state, i.e., calling for a CARE operation, the condition XY calls for the selection of the TRUE B input and the condition XY calls for the complement of the B input.

In FIG. 7, there is shown an illustration of an array constructed in accordance with the invention wherein only a logical operation is performed. The array is selected to comprise a grid of eight by eight logical cells to constitute eight columns and eight rows. The A, to A inputs are the inputs to each row of cells, it being assumed that the B inputs of the first columnare tied to the A inputs and are therefore not shown. The eight columns are designated 0-7 whereby the output lines E are correspondingly designated E E The 0, 1, 2 and 4 columns are selected to perform logical AND operations whereby the situation UV obtains. The columns 3, 5, 6 and 7 are selected to perform logical OR operations whereby the situation UV obtains. Where a logical AND operation is to be performed by a column, the C input to a column is a binary 1. Where a logical OR operation is to be performed, the C input to a column is a binary 0.

In FIG. 7, the symbol T within a cell indicates that a TRUE CARE is called for, i.e., the condition XY. The symbol C indicates that a COMPLEMENT CARE is called for, i.e., the condition XV. The symbol R indicates that a transfer is to take place as shown in FIG. 4, i.e., the condition KY and a blank indicates that a pass operation is to take place, as shown in FIG. 3, i.e., the condition RY.

In considering the operation of the arrangement shown in FIG. 7, it is readily appreciated that the output on line E is equal to rig-.4324: that the output on line E, is equal to ni -:1 4 :4,: and that the output on line E is equal to .4;,-.4 -.4 -.l,,. Column 3 calls for a logical OR operation. It is realized that a pass operation, i.e., condition Xv, permits a passing through of the outputs through the right horizontally and downward vertically. Thus, in column 4, A A and A are ANDed at cells 14, 24 and 34. The latter combination is then transferred by cell 44 to logical OR cell 45 in column 5. A which occurs as a single input to OR cell 23, is passed through cell 33 and then transferred by transfer cell 43 to cell 44. Since cell 44 is also a transfer cell, the input A is transferred by cell 44 as an input to logical AND cell 54 where it is ANDed with A and A in AND cells 54 and 64. This AND function, i.e., A A A is transferred by transfer cell 74 to cell 75. Input A in cell 42 is transferred by transfer cell 43 to cell 53 from whence it is passed through cell 63 into cell 73 where it is logically ORd with input A,. The OR combination of (A,,+A is then transferred by cell 83 to cell 84 from which it is passed to logical OR cell 85 Thus, the output on line E is equal to (A -1 x4 (A2'A5A6) +144 It is appreciated that with the conditions imposed in columns 3, 4 and 5, there is generated a multilevel function using the TRANSFER condition in accordance with the principles of the invention.

In FIG. 8A, there is shown a grid similar to that of FIG. 7 but which illustrates the combined use of logical and arithmetic selection of the invention as well as the capability to program select a threshold. As seen in FIG. 8A, the 0, l, 4 and 5 columns are chosen to perform arithmetic operations, i.e., condition U. Columns 0, 1 and 5 are chosen to add a binary 0" respectively, i.e., condition V, and column 4 is chosen to add a binary I, i.e., condition V. Columns 2, 6 and 7 are selected to perform logical OR operations, i.e., condition UV, and column 3 is selected to perform a logical AND operation, i.e., condition UV. In the setting forth of the columnar conditions in the grid of FIG. 8, it is to be noted that column 0 has a binary weighting of l column 1 has. a binary weighting of 2" and column 2 has a binary weighting of 4, in accordance with binary notation. However, it is seen that column 2 is controlled not for an arithmetic operation but for a logical OR operation. Column 2, in this situation, is advantageously programmed as a logical OR operation because with seven A inputs, the maximum count in a column could only be seven whereby only a single carry would be available in column 2 at the row inputs of cells 52, 62, 72 and 82. By selecting this column as a logical function, the row inputs are made available to column 3 for the generation of an independent function without being in any way involved with carries as would occur with an arithmetically controlled column as is further explained hereinbelow.

In considering the operation ofthe grid shown in FIG. 8A, it is to be realized that the C input in an arithmetic operation where a binary 0" is to be added is binary 0 and where a binary I is to be added, a binary I." As explained previously in connection with the grid of FIG. 7, a binary 0 is inserted as the C input in a column calling for logical OR operation and a binary l is inserted in a column calling for a logical AND operation.

The operation of the grid of FIG. 8A is readily followed with reference to FIG. 88. Let it be assumed that all of the A inputs are all binary ls." Thus, into cell 10, the C input is a binary 0" and the A input is a binary l whereby a binary l goes to cell 20 with no carry to cell 11. The A binary l input and the binary l input from cell 10 are added in cell 20 to result in a binary 0" going to cell 30 and a binary l carry going to cell 21. In cell 30 the binary 0" from cell 20 and the A binary l input result in a binary l going to cell 40 where the one is passed through to appear as an input to cell 50. The-binary l A input is added in cell 50 to the binary l output from cell 30 whereby a O is applied to cell 60 and a binary l" is carried to cell 51. In cell 60, the binary 1" A input and the 0" output from cell 50 are added to provide a binary l carry to cell 70. In cell 70, the binary l A input andthe one output from cell 60 are added to provide a binary one carry to cell 71. In cell 80, the binary 0" output from cell and the binary l A output are added to provide a binary l output on line E In column 1, there are added the C binary 0" output and the 0" output from cell 10 whereby a 0 is applied as an input to cell 21. In cell 21, the binary l carry from cell 20 and the 0" output from cell 11 are added to provide binary l input to cell 31. In cell 31, the binary l output from cell 21 and the 0 output fro cell 30 are added to provide a binary l input to cell 41, the binary l being passed through cell 41 to appear as an input to cell 51. In cell 51, the binary l carry from cell 50 and the binary "1 output from cell 31 are added to provide a binary "I" carry to cell 52 and a 0 input to cell 61. In cell 61, the 0 output from cell 51 and the 0 output from cell 60 are added to provide a 0" input to cell 71. In cell 71, the binary l carry from cell 70 and the 0 output from cell 61 are added to provide a binary 1 input to cell 81. Thus, a binary l appears on output line 13,.

In column 2, binary zeros appear on the B inputs to cells 12, 22 and 32. A binary l appears on the B input to cell 52 and binary zeros appear on the B inputs to cells 62, 72 and 82 whereby, with column 2 being caused to execute an OR operation, a binary 1" appears on output line E It can now be appreciated how the selection of columnZ to perform an OR operation presents the advantage in that the maximum count could only be seven whereby only a single carry would be available at the row input of cells 52, 62, 72 or 82 and that, by selecting this column as a logical function, the row inputs A are made available to column 3 for the generation of an independent function. The operation of columns 0, 1 and 2 in the 3 grid of FIG. 8 leads to the following expression: 0( )v 1( )y 2( l 2 3 5 6 1 8)- In the function generated in columns 3-6 of FIG. 8A, there is illustrated the combined use of the logical and arithmetical selection as well as the ability. to program select a threshold. Thus, in column 3 which calls for a logical AND operation, A and A are ANDed together in logical AND cells 13 and 23 and transferred through transfer cell 33 to. cell 34. Input A is transferred through transfer cell 33 to be ANDed with input 'A In logical AND cell 43, the A A, combination is transferred through transfer cell 53 to cell 54. Input A is transferred through transfer cell 53 to be ANDed in logical AND cell 63 with input A the AND combination of A and A being transferred through transfer cell 73 to cell 74. The A input appears on the B input to cell 84. As has been mentioned immediately hereinabove, the purpose of this function is to produce a signal at a threshold count, specifically a threshold count of three out of four inputs. To effect this, the total of a binary is added in columns 4 and 5, i.e., a binary I is added to column 4 and a binary 0" is added to column 5.

It is seen that columns 4, 5 and 6 with columns 4 and 5 calling for arithmetic operations, and column 6 calling for logical OR operation, result in the same weightings as correspondingly resulted in the cases of columns 0, 1 and 2, i.e., the binary values of l 2 and 4 respectively. By adding a binary l total to columns 4 and 5, a threshold signal is generated at the output of column 6 when three or more of the row inputs are satisfied.

In considering the operation of rows 4, S and 6 in FIG. 8A, with the addition of a binary 1" input to cell 34 and a binary l 4,-7, input, the output from cell 34 to cell 54 is a binary 0" with a binary l carry to cell 35. In cell 54, the binary one input, i.e., A 14 is added with the binary 0 output from cell 34 to provide a binary l input to cell 74. In cell 74, the binary l output from cell 54 and the binary l input A 14 are added to provide a to cell 84 and a binary l carry to cell 75. In cell 84, the binary 0" output of cell 74 and the binary l" input A provide a binary l output on line E In column 5, the binary I carry from cell 34 and the binary 0" C input are added in cell 35 to provide a binary l to cell 55 and a binary O to cell 36. In cell 55, the binary 1" output from cell 35 and the binary 0" input from cell 54 provide a binary I to cell 75. In cell 75, the binary l output from cell 55 and the binary l carry from cell 74 provide a binary 0" output to cell 85 and a binary l carry to cell 76. In cell 85, the binary 0" output from cell 75 and the binary O carry from cell 84 provide a binary 0" output on line E.

In column E the binary l appears in cell 76 as a result of the arithmetic operation in columns 4 and 5, and a binary appears on the output line E Thus, with the addition of the constant binary l to the sum of the inputs to column 4 and and with three or more of the row inputs being satisfied, a threshold signal at the binary 4 weighted output, i.e., the output of column 6, appears when three or more of the row inputs are satisfied.

The arrangement according to the invention may also be used, for example, for matching a measurement vector against binary or ternary reference vectors and the formation of mismatch counts, i.e., the computation of binary or ternary dot products. In such application, the measurement vector would be connected to the inputs A of the array and for each reference a number of columns sufficient to accommodate the largest permissible mismatch count, are programmed for arithmetic operation. The Don't Care conditions in the reference vector are programmed by making the corresponding rows Pass conditions, and the black/white" defining bits are programmed using the true/complement" inputs to the first of the arithmetic columns. The final mismatch counts are taken from the bottoms of the corresponding arithmetic columns.

An array constructed in accordance with the principles of the invention is designed such that it can be extended both by rows and columns as shown in FIG. 9 wherein each block represents a discrete grid. The V input may be connected to the C input as shown when external logic control is not used.

FIG. 10 shows how, in accordance with the invention, multilevel arrays can be built up by connecting the output E of an array or group of arrays to the input A of a second array or group of arrays.

It will be apparent that the regular structure of the array is well suited to implementation in integrated circuit technologies.

While the invention has been particularly shown and described with reference to a preferred embodiment thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and details may be made therein without departing from the spirit and scope of the invention.

What we claim is:

l. A programmable logic and arithmetic manipulating arrangement comprising:

a rectangular array of cells which define N+lcolumns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column;

a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states;

a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states;

means for applying respective B,B inputs to each of the cells in the leftmost column of said array;

means for applying A,-A respective inputs to the cells comprising each row in said array;

means for applying respective C,,C inputs to each of the cells in the topmost row of said array;

said array being operative to produce respective D,-D,,, outputs from the cells comprising the rightmost column of said array and E E, respective outputs from the cells comprising the lowermost row of said array;

said cells each comprising a circuit for producing the following D and E outputs:

2. A programmable logic and arithmetic manipulating arrangement comprising:

a rectangular array of cells which define N+l columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column;

a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states;

a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states;

means for applying respective B,B inputs to each of the cells in the leftmost column of said array;

means for applying A A respective inputs to the cells comprising each row in said array;

means for applying respective C C inputs to each of the cells in the topmost row of said array;

said array being operative to produce respective D,-D outputs from the cells comprising the rightmost column of said array and E E respective outputs from the cells comprising the lowermost row of said array;

said cells each comprising a circuit for producing the following D and E outputs:

means for connecting the respective V stages, the U stages and the X and Y stages in series arrangement to enable said last named arrangement to be operated as a shift register in the column; and

means for applying an input to each of said columns for respectively shifting the contents of said V, U, X and Y stages in the columns.

3. A programmable logic and arithmetic manipulating arrangement comprising:

a rectangular array of cells which define N+l columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column;

a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states, one binary state of said U stage resulting in an arithmetic operation for a column, the opposite binary state of said U stage resulting in a logical operation for said column, one binary state of said V stage resulting in the addition of a binary 1 to a column when the state of said U stage results in an arithmetic operation, the opposite binary state of said stage in said arithmetic operation resulting in the addition of a binary to a column, one binary state of said V stage resulting in an AND operation when the state of said U stage results in a logical operation, the opposite binary state of said V stage during said logical operation resulting in an OR operation;

a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states;

means for applying respective B,B inputs to each of the cells in the leftmost column of said array;

means for applying A,A respective inputs to the cells comprising each row in said array;

means for applying respective C C inputs to each of the cells in the topmost row of said array;

said array being operative to produce respective D,D outputs from the cells comprising the rightmost column of said array and E,, E, respective outputs from the cells comprising the lowermost row of said array;

said cells each comprising a circuit for producing the following D and E outputs:

4. A programmable logic and arithmetic manipulating arrangement comprising:

a rectangular array of cells which define N+l columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column; first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states; third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states, one binary state of said X stage resulting in a care operation in a cell controlled thereby, the opposite binary state of said X stage resulting in a dont care operation in said cell, one binary state of said Y stage when the state of its corresponding X stage results in a care operation causing the selection of the true value of the B input to said cell, the opposite binary state of said Y stage during said care operation causing the selection of the complement of the B input to said cell, one binary state of said Y stage when the state of its corresponding X stage results in a dont care operation causing a transfer operation in said cell, the opposite binary state of said Y stage during said don't care operation causing a pass operation in said cell;

means for applying respective B,--B,, inputs to each of the cells in the leftmost column of said array;

means for applying A,A,, respective inputs to the cells comprising each row in said array;

means for applying respective C C inputs to each of the cells in the topmost row of said array;

said array being operative to produce respective D,-D outputs from the cells comprising the rightmost column of said array and E,, E, respective outputs from the cells comprising the lowermost row of said array;

said cells each comprising a circuit for producing the fol- 5. A programmable logic and arithmetic manipulating arrangement comprising:

a rectangular array of cells which define N+l columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column;

a first-storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states, one binary state of said U stage resulting in an arithmetic operation for a column, the opposite binary state of said U stage resulting in a logic operation for said column, one binary state of said V stage resulting in the addition of a binary l to a column when the state of said U stage results in an arithmetic operation, the opposite binary state of said V stage in said arithmetic operation resulting in the addition of a binary 0 to a column, one binary state of said V stage resulting in an AND operation when the state of said U stage results in a logical operation, the opposite binary state of said V stage during said logical operation resulting in an OR operation;

a third storage stage X and a fourth storage stage Y co11- nected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states, one binary state of said X stage resulting in a care operation in a cell controlled thereby, the opposite binary state of said X stage resulting in a don t care operation in said cell, one binary state of said Y stage when the state of its corresponding X stage results in a care operation causing the selection of the true value of the B input to said cell, the opposite binary state of said Y stage during said care operation causing the selection of the complement of the B input to said cell, one binary state of said Y stage when the state of its corresponding X stage results in a dont care operation causing a transfer operation in said cell, the opposite binary state of said Y stage during said dont care operation causing a pass operation in said cell;

means for applying respective B,B inputs to each of the cells in the leftmost column of said array;

means for applying A,A respective inputs to the cells comprising each row in said array;

means for applying respective C D inputs to each of the cells in the topmost row of said array;

said array being operative to produce respective D,D outputs from the cells comprising the rightmost column of said array and E E,' respective outputs from the cells comprising the lowermost row of said array;

said cells each comprising a circuit for producing the following D and E outputs:

6. An arrangement as defined in claim 5 wherein there are included a plurality of said arrays, the D -D outputs of an array being the B,B inputs to an array horizontally adjacent to said array, the lil -E outputs of an array being the C -C inputs to an array horizontally adjacent to said array.

7. An arrangement as defined in claim 5 wherein said A and B inputs are tied together and said C and V inputs are tied together.

8. An arrangement as defined in claim 5 wherein there are included a plurality of said arrays, the E E, outputs of an array being the A,A inputs to another array.

mg?" UNITED STATES PATENT OFFICE CERTIFICATE OF CORRECTION June 8, 1971 Patent No. 3 5 Dated Inventor-(5) Davey Malaby and Michael A. Wesley It is certified that error appears in the above-identified patent and that said Letters Patent are hereby corrected as shown below:

Col. 10, line 50 Correct C --D to C C Signed and sealed this 10th day of October 1972.

(SEAL) Attest:

ROBERT GOTTSCHALK EDWARD M.FLETCHER, JR.

Commissioner of Patents Attesting Officer 

1. A programmable logic and arithmetic manipulating arrangement comprising: a rectangular array of cells which define N+1columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column; a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states; a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states; means for applying respective B1-BM inputs to each of the cells in the leftmost column of said array; means for applying A1-AM respective inputs to the cells comprising each row in said array; means for applying respective C0-CN inputs to each of the cells in the topmost row of said array; said array being operative to produce respective D1-DM outputs from the cells comprising the rightmost column of said array and E0-EN respective outputs from the cells comprising the lowermost row of said array; said cells each comprising a circuit for producing the following D and E outputs: D X(YC+YB)+X(UA+UC(YB+YB)) E X(YB+YC)+X ((UV+UC+UC)(YB+ YB))+(UC(YB+YB))+(UVC)
 2. A programmable logic and arithmetic manipulating arrangement comprising: a rectangular array of cells which define N+1 columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column; a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states; a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states; means for applying respective B1-BM inputs to each of the cells in the leftmost column of said array; means for applying A1-AM respective inputs to the cells comprising each row in said array; means for applying respective C0-CN inputs to each of the cells in the topmost row of said array; said array being operative to produce respective D1-DM outputs from the cells comprising the rightmost column of said array and E0-EN respective outputs from the cells comprising the lowermost row of said array; said cells each comprising a circuit for producing the following D and E outputs: D X(YC+YB)+XUA+UC(YB+YB)) E X(YB+YC)+X ((UV+UC+UC)(YB+ YB))+(UC(YB+YB))+(UVC) means for connecting the respective V stages, the U stages and the X and Y stages in series arrangement to enable said last named arrangement to be operated as a shift register in the column; and means for applying an input to each of said columns for respectively shifting the contents of said V, U, X and Y stages in the columns.
 3. A programmable logic and arithmetic manipulating arrangement comprising: a rectangular array of cells which define N+1 columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column; a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states, one binary state of said U stage resulting in an arithmetic operation for a column, the opposite binary state of said U stage resulting in a logical operation for said column, one binary state of said V stage resulting in the addition of a binary ''''1'''' to a column when the state of said U stage results in an arithmetic operation, the opposite binary state of said V stage in said arithmetic operation resulting in the addition of a binary ''''0'''' to a column, one binary state of said V stage resulting in an AND operation when the state of said U stage results in a logical operation, the opposite binary state of said V stage during said logical operation resulting in an OR operation; a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determinEd by said U and V stages, said X and Y stages each being capable of assuming opposite binary states; means for applying respective B1-BM inputs to each of the cells in the leftmost column of said array; means for applying A1-AM respective inputs to the cells comprising each row in said array; means for applying respective C0-CN inputs to each of the cells in the topmost row of said array; said array being operative to produce respective D1-DM outputs from the cells comprising the rightmost column of said array and E0-EN respective outputs from the cells comprising the lowermost row of said array; said cells each comprising a circuit for producing the following D and E outputs: D X(YC+YB)+X(UA+UC(YB+YB)) E X(YB+YC)+X ((UV+UC+UC)(YB+ YB))+(UC(YB+YB))+(UVC)
 4. A programmable logic and arithmetic manipulating arrangement comprising: a rectangular array of cells which define N+1 columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the output E of each cell in a column being applied as an input C to the next lower cell in said column; a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states; a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states, one binary state of said X stage resulting in a care operation in a cell controlled thereby, the opposite binary state of said X stage resulting in a don''t care operation in said cell, one binary state of said Y stage when the state of its corresponding X stage results in a care operation causing the selection of the true value of the B input to said cell, the opposite binary state of said Y stage during said care operation causing the selection of the complement of the B input to said cell, one binary state of said Y stage when the state of its corresponding X stage results in a don''t care operation causing a transfer operation in said cell, the opposite binary state of said Y stage during said don''t care operation causing a pass operation in said cell; means for applying respective B1-BM inputs to each of the cells in the leftmost column of said array; means for applying A1-AM respective inputs to the cells comprising each row in said array; means for applying respective C0-CN inputs to each of the cells in the topmost row of said array; said array being operative to produce respective D1-DM outputs from the cells comprising the rightmost column of said array and E0-EN respective outputs from the cells comprising the lowermost row of said array; said cells each comprising a circuit for producing the following D and E outputs: D X(YC+YB)+X(UA+UC(YB+YB)) E E X(YB+YC)+X ((UV+UC+UC)(YB+YB)+(UC(YB+YB))+(UVC)
 5. A programmable logic and arithmetic manipulating arrangement comprising: a rectangular array of cells which define N+1 columns of said cells and M rows of said cells, the output D of each cell in a row being applied as an input B to the next cell to the right in said row, the oUtput E of each cell in a column being applied as an input C to the next lower cell in said column; a first storage stage U and a second storage stage V connected to each of said columns for determining the operation to be performed by each column, said U and V stages each being capable of assuming opposite binary states, one binary state of said U stage resulting in an arithmetic operation for a column, the opposite binary state of said U stage resulting in a logic operation for said column, one binary state of said V stage resulting in the addition of a binary ''''1'''' to a column when the state of said U stage results in an arithmetic operation, the opposite binary state of said V stage in said arithmetic operation resulting in the addition of a binary ''''0'''' to a column, one binary state of said V stage resulting in an AND operation when the state of said U stage results in a logical operation, the opposite binary state of said V stage during said logical operation resulting in an OR operation; a third storage stage X and a fourth storage stage Y connected to each of said cells for determining the operations to be performed by each of said cells in accordance with the operation determined by said U and V stages, said X and Y stages each being capable of assuming opposite binary states, one binary state of said X stage resulting in a care operation in a cell controlled thereby, the opposite binary state of said X stage resulting in a don''t care operation in said cell, one binary state of said Y stage when the state of its corresponding X stage results in a care operation causing the selection of the true value of the B input to said cell, the opposite binary state of said Y stage during said care operation causing the selection of the complement of the B input to said cell, one binary state of said Y stage when the state of its corresponding X stage results in a don''t care operation causing a transfer operation in said cell, the opposite binary state of said Y stage during said don''t care operation causing a pass operation in said cell; means for applying respective B1-BM inputs to each of the cells in the leftmost column of said array; means for applying A1-AM respective inputs to the cells comprising each row in said array; means for applying respective C0-DN inputs to each of the cells in the topmost row of said array; said array being operative to produce respective D1-DM outputs from the cells comprising the rightmost column of said array and E0-EN respective outputs from the cells comprising the lowermost row of said array; said cells each comprising a circuit for producing the following D and E outputs: D X(YC+YB)+X(UA+UC(YB+YB)) E X(YB+YC)+X ((UV+UC+UC)(YB+ YB))+(UC(YB+YB))+(UVC)
 6. An arrangement as defined in claim 5 wherein there are included a plurality of said arrays, the D1-DM outputs of an array being the B1-BM inputs to an array horizontally adjacent to said array, the E0-EN outputs of an array being the C0-CN inputs to an array horizontally adjacent to said array.
 7. An arrangement as defined in claim 5 wherein said A and B inputs are tied together and said C and V inputs are tied together.
 8. An arrangement as defined in claim 5 wherein there are included a plurality of said arrays, the E0-EN outputs of an array being the A1-AM inputs to another array. 